$(function(){

    var wsServer = {
        localIp     : "127.0.0.1",
        aliIp       : "47.100.122.192",
        port        : "5567",
        protocol    : "ws",
        wsServer    : undefined,
        packageList : [],


        friendNode  : undefined,

        // 初始化
        init: function () {

            var token = zakeT.getQueryVariable('token');
            var env = zakeT.getQueryVariable('env');
            if (false === token || undefined === token || "" === token) {
                alert("token is empty");
                return;
            }

            var ip = this.localIp;
            if ("ali" === env) {
                ip = this.aliIp;
            }

            // 链接ws server
            var ws      = new WebSocket(this.protocol + "://" + ip + ":" + this.port + "/" + token);
            var handler = new ZakeEvent();

            // 发送消息按钮
            var postBtn = $("#post_message_btn");
            // 好友列表区
            var friendPanel = $("#friend_list_panel");
            // 发送用户页面
            var chatTitlePanel = $("#chat_title_panel");

            // 消息输入区
            var messageInput = $("#post_message");
            // 发送用户区
            var toUserInput = $("#post_to_id");
            // 当前用户区
            var fromUserInput = $("#post_from_id");


            // connect success
            ws.onopen = function (ev) {


                // 选择好友列表
                friendPanel.on("click","li",function(){

                    // 选用用户节点
                    var node = $(this);
                    // 选中用户的信息
                    var selectFriend = node.data("userinfo");
                    // 选中用户的聊天消息
                    var selectFriendChatList = node.find(".message_list_panel").html();


                    // 当前聊天窗口
                    var chatPanel = $("#chat_user_body_panel");
                    // 当前聊天窗口的html内容
                    var chatMessageList = chatPanel.html();

                    console.log(selectFriend);

                    // 移除禁用
                    messageInput.removeClass("disabled");
                    postBtn.removeClass("disabled");

                    // 如果当前已有选择的好友，则将好友的消息缓存起来
                    var chatUserVal = toUserInput.val();
                    if(chatUserVal === 0 || chatUserVal === "0"){

                        // 当前没有聊天好友

                    }else{


                        // 当前已有聊天好友
                        chatUserVal         = JSON.parse(chatUserVal);
                        var chatUserId      = chatUserVal.id;
                        var chatUserPanel   = $("#friend_info_panel_" + chatUserId);
                        var chatUserMessagePanel= chatUserPanel.find(".message_list_panel");
                        // 将当前聊天内容缓存到用户消息数据中
                        chatUserMessagePanel.html(chatMessageList);

                    }

                    // 聊天界面显示用户消息
                    chatPanel.html(selectFriendChatList);
                    // title 显示选择好友名称
                    chatTitlePanel.html(selectFriend.nickName);
                    // to user 写入选择的好友
                    toUserInput.val(JSON.stringify(selectFriend));

                });


                // 发送消息
                postBtn.bind("click",function(){

                    var fromUserInfo  = JSON.parse(fromUserInput.val());
                    var toUserInfo    = JSON.parse(toUserInput.val());
                    var postBody      = messageInput.val();

                    if(postBody === "" || undefined === postBody){
                        alert("请输入内容");
                        return false;
                    }


                    var messageDto = {
                        "type"      : "MESSAGE_P",
                        "body"      : postBody,
                        "from"      : fromUserInfo,
                        "to"        : toUserInfo
                    };
                    var messageJsonDto = JSON.stringify(messageDto);

                    // 发送消息
                    ws.send(messageJsonDto);
                    messageInput.val("");

                    // 将发送消息渲染到当前聊天窗口
                    var html = tpl.html($("#chat_sender_panel_tpl").text(),messageDto);
                    // 当前聊天窗口
                    var chatPanel = $("#chat_user_body_panel");
                    chatPanel.append(html);

                })

            };



            // 读取消息
            ws.onmessage = function (ev) {
                var zakePackage = new ZakePackage(ev.data,handler,token);
                zakePackage.call();
            };



            // 链接关闭
            ws.onclose = function (ev) {
                console.log("==链接断开==");
                handler.SUserOff();
            }
        }





    };



    // 项目初始化
    wsServer.init();

});